// using Pinwheel.LSerialize;
//
// namespace Pinwheel.Kernel.Message
// {
//     [LSerializable]
//     public partial struct ClientMessage
//     {
//         [LSerializeInclude] private MessageType m_Type;
//         [LSerializeIgnore] public MessageType Type => m_Type;
//         
//         [LSerializeInclude] private int m_Session;
//         [LSerializeIgnore] public int Session => m_Session;
//         
//         [LSerializeInclude] private string m_Method;
//         [LSerializeIgnore] public string Method => m_Method;
//         
//         [LSerializeInclude] private IMessage m_Message;
//         [LSerializeIgnore] public IMessage Message => m_Message;
//         
//         public ClientMessage(MessageType type, int session, string method, IMessage message)
//         {
//             m_Type = type;
//             m_Session = session;
//             m_Method = method;
//             m_Message = message;
//         }
//         
//         public void SetType(MessageType type)
//         {
//             m_Type = type;
//         }
//         
//         public void SetSession(int session)
//         {
//             m_Session = session;
//         }
//         
//         public void SetMethod(string method)
//         {
//             m_Method = method;
//         }
//         
//         public void SetMessage(IMessage message)
//         {
//             m_Message = message;
//         }
//
//         public static implicit operator ServiceMessage(ClientMessage value)
//         {
//             var message = new ServiceMessage();
//             message.SetType(value.Type);
//             message.SetSession(value.Session);
//             message.SetMethod(value.Method);
//             message.SetMessage(value.Message);
//             return message;
//         }
//     }
// }